﻿Public Class GebaeudeFestung
    Inherits ObjektGebaeude
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FESTUNG", neuSpieler, neuX, neuY, ObjektSpielfeld.Bodenschlacht)
        GebaeudeLaden(True)
        getBildID(Spielfeld)
    End Sub
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuLeben As Integer, ByVal neuBesetzungszahl As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Feuerzahl As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FESTUNG", neuSpieler, neuLeben, neuBesetzungszahl, neuX, neuY, Feuerzahl, ObjektSpielfeld.Bodenschlacht)
        GebaeudeLaden(False)
        getBildID(Spielfeld)
    End Sub

    Public Sub New()
        MyBase.New("", -1, -1, -1, ObjektSpielfeld.Bodenschlacht)
        Gebaeudename = "Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = -1
        Reichweite = -1
        Rechteck.Height = Hauptmenue.Feldbreite * 4
        Rechteck.Width = Hauptmenue.Feldbreite * 4
        Angriff = Angriffe.HQ
        If Spieler = 0 Then
            Leben = -1
        Else
            Select Case DataSettings.CommanderWarsGameModus
                Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                    Leben = 2000
                Case Else
                    Leben = -1
            End Select
        End If
        Feuerbereite = -1
        Feuerladung = -1
        RotationsZenturm = New Point(Hauptmenue.Feldbreite * 3 / 2, Hauptmenue.Feldbreite * 5 / 2)
        WirdZu = "EBENE+SCHROTT"
        Array.Resize(Variablen, 0)
        Verweisgebaeude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-1, 2}, {-2, 1}, {-2, -2}, {-1, -3}, {2, -3}, {3, -2}, {3, 1}, {2, 2}}
    End Sub

    Private Sub GebaeudeLaden(ByVal MitMiniGeschuetzen As Boolean)
        Gebaeudename = "Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = -1
        Reichweite = -1
        Rechteck.Height = Hauptmenue.Feldbreite * 4
        Rechteck.Width = Hauptmenue.Feldbreite * 4
        Angriff = Angriffe.HQ
        If Spieler = 0 Then
            Leben = -1
        Else
            Select Case DataSettings.CommanderWarsGameModus
                Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                    Leben = 2000
                Case Else
                    Leben = -1
            End Select
        End If
        Feuerbereite = -1
        Feuerladung = -1
        RotationsZenturm = New Point(Hauptmenue.Feldbreite * 3 / 2, Hauptmenue.Feldbreite * 5 / 2)
        WirdZu = "EBENE+SCHROTT"
        Array.Resize(Variablen, 0)
        Verweisgebaeude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}}
        If Rechteck.X > 0 And Rechteck.Y > 1 Then
            For I = 0 To Verweisgebaeude.GetLength(0) - 1
                If Not Objektverwalter.Spielfeld Is Nothing Then
                    Objektverwalter.Spielfeld.Landschaften(Rechteck.X + Verweisgebaeude(I, 0), Rechteck.Y + Verweisgebaeude(I, 1), ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeVerweis(Spieler, Rechteck.X, Rechteck.Y, ObjektSpielfeld.Bodenschlacht)
                End If
            Next
        End If
        If Objektverwalter.Spielfeld IsNot Nothing Then
            If MitMiniGeschuetzen = True Then
                'Wir erstellen die Minigeschuetze der Festung
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y + 2, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_S(Spieler, Rechteck.X + 2, Rechteck.Y + 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y + 2, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_S(Spieler, Rechteck.X - 1, Rechteck.Y + 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y + 1, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_W(Spieler, Rechteck.X - 2, Rechteck.Y + 1, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y - 2, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_W(Spieler, Rechteck.X - 2, Rechteck.Y - 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y - 3, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_N(Spieler, Rechteck.X - 1, Rechteck.Y - 3, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y - 3, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_N(Spieler, Rechteck.X + 2, Rechteck.Y - 3, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y - 2, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_O(Spieler, Rechteck.X + 3, Rechteck.Y - 2, Nothing)
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y + 1, ObjektSpielfeld.Bodenschlacht).Gebaeude = New GebaeudeMinigeschuetz_O(Spieler, Rechteck.X + 3, Rechteck.Y + 1, Nothing)
            End If
        End If
    End Sub
    Public Overrides Function GetMaxLeben() As Integer
        Select Case DataSettings.CommanderWarsGameModus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                If Leben > 2000 Then Return Leben
                Return 2000
            Case Else
                If Leben > -1 Then Return Leben
                Return -1
        End Select
    End Function
    Public Overrides Sub Feuer(ByVal X As Integer, ByVal Y As Integer)
        'DO nothing
    End Sub
    Public Overrides Sub FeuerradiusAnzeigen()
        'Do Nothing
    End Sub
    Public Overrides Sub DOSpielFrame()
        'DO nothing
    End Sub
    Public Overrides Function GetLandschaftsuntergrund() As String()
        Return New String() {"EBENE", "SCHNEE", "WUESTE", "EBENE+SCHROTT"}
    End Function
    Public Overrides Function GetAngriffsFelder() As System.Drawing.Point()
        Return New Point() {}
    End Function
End Class
